#shader vertex 
#version 330 core

layout(location=0) in vec4 position;
layout(location=1) in vec2 texCoord;
// 一种叫做 varying 的技术:
// vertex shader执行次数跟顶点个数相同!而fragment shader执行次数跟像素个数相同！
// 那 vertex shader 中 输出的变量值 和 fragment shader中输入的变量值有什么关系呢？
// 原来OpenGL已经帮我们用了一种叫做 varying 的技术将 vertex shader 中输出的值，以某种方式换成多个中间的值!!!
out vec2 v_TexCoord;
uniform mat4 u_MVP;

void main()
{
	// OpenGL: Prjection * View * Model (因为我们要处理的矩阵都是 Column-Major-Order 的）
	// Direct3D: Model * View * Projection（Direct3D是Row-Major-Order的）
	// Prjection,View,Model都是4*4的矩阵
	gl_Position = u_MVP * position;
	v_TexCoord = texCoord;
};

#shader fragment
#version 330 core

layout(location=0) out vec4 color;

in vec2 v_TexCoord;

uniform vec4 u_Color;
uniform sampler2D u_Texture;

void main()
{
	vec4 texColor = texture(u_Texture, v_TexCoord);
	color = texColor;
	// color = u_Color;
};
